/*
 * Archivo.cpp
 *
 *  Created on: 18/04/2014
 *      Author: manuel
 */

#include "Archivo.h"

Archivo::Archivo(std::string path) {
	this->path = path;
}

Archivo::~Archivo() {
	archivo.close();
}

void Archivo::crear() {
	archivo.open(path.c_str(), std::fstream::out | std::fstream::trunc | std::fstream::binary);
	archivo.close();
	archivo.open(path.c_str(), std::fstream::in | std::fstream::out | std::fstream::binary);
}

int Archivo::abrir() {
	archivo.open(path.c_str(), std::fstream::in | std::fstream::out | std::fstream::binary );

	if ( !archivo.is_open()) {
		crear();
	}

	return archivo.is_open();
}

int Archivo::termino() {
	return !archivo.good();
}

int Archivo::cerrar() {
	archivo.close();
	return ( !archivo.is_open() );
}

int Archivo::bytesLeidos() {
	return archivo.gcount();
}

bool Archivo::leerBloque(Bloque& unBloque) {
	return unBloque.cargarDesde(archivo);
}

bool Archivo::escribirBloque(Bloque& unBloque) {
	return unBloque.escribirEn(archivo);
}

bool Archivo::leerByte(Byte& unByte) {
	return unByte.cargarDesde(archivo);
}

bool Archivo::escribirByte(Byte& unByte) {
	return unByte.escribirEn(archivo);
}

